#define  _CRT_SECURE_NO_WARNINGS 1

//#include<bits/stdc++.h>
//#define sd(n) scanf("%d",&n) 
//#define sld(n) scanf("%lld",&n)
//#define pd(n) printf("%d", (n))
//#define pld(n) printf("%lld", n)
//#define all(x) (x).begin(),(x).end()
//#define rall(x) (x).rbegin(),(x).rend()
//const int N = 2e5;
//const int maxn = 1e6;
//typedef long long int ll;
//using namespace std;
////----------------------------------------------------------------------------//
//
//void solve()
//{
//
//}
//
//int main()
//{
//	int T;
//	sd(T);
//	while (T--)
//	{
//		solve();
//	}
//	return 0;
//}




//#include<bits/stdc++.h>
//#define sd(n) scanf("%d",&n) 
//#define sld(n) scanf("%lld",&n)
//#define pd(n) printf("%d", (n))
//#define pld(n) printf("%lld", n)
//#define all(x) (x).begin(),(x).end()
//#define rall(x) (x).rbegin(),(x).rend()
//#define fi first
//#define se second
//const int N = 2e5;
//#define INF 0x7fffffff
//typedef long long int ll;
//using namespace std;
////----------------------------------------------------------------------------//
//int st[10];
//set<int, greater<int>> cnt;
//void solve()
//{
//    int num[11] = { 0,1,2,3,4,5,6,7,8,9 };
//    do
//    {
//        for (int i = 1; i <= 8; i++)
//        {
//            memset(st, 0, sizeof st);
//            ll a = 0, b = 0;
//            for (int j = 1; j <= i; j++)
//            {
//                a *= 10; a += num[j];
//            }
//            for (int j = i + 1; j <= 9; j++)
//            {
//                b *= 10; b += num[j];
//            }
//            ll ans = a * b;
//            ll res = ans;
//            bool ok = true;
//            while (ans)
//            {
//                st[ans % 10]++;ans /= 10;
//            }
//            for (int j = 1; j <= 9; j++)
//            {
//                if (st[j] != 1)
//                {
//                    ok = false; break;
//                }
//            }
//            if (ok) cnt.insert(res);
//        }
//    } while (next_permutation(num + 1, num + 10));
//
//    //cout << *cnt.begin();
//    puts("");
//}
//
//int main()
//{
//    int T=1;
//    //sd(T);
//    while (T--)
//    {
//        solve();
//    }
//    return 0;
//}



//#include<bits/stdc++.h>
//#define sd(n) scanf("%d",&n) 
//#define sld(n) scanf("%lld",&n)
//#define pd(n) printf("%d", (n))
//#define pld(n) printf("%lld", n)
//#define all(x) (x).begin(),(x).end()
//#define rall(x) (x).rbegin(),(x).rend()
//#define fi first
//#define se second
//const int N = 2e5;
//#define INF 0x7fffffff
//typedef long long int ll;
//using namespace std;
//#define PII pair<char,bool>
////----------------------------------------------------------------------------//
//int dx[4] = { -1, 0, 1, 0 };
//int dy[4] = { 0, 1, 0 ,-1 };
//int n; PII a[100][100];
//bool check(int x, int y)//i,j
//{
//	for (int i = 0; i <= 4; i++)
//	{
//		int a2 = x + dx[i], b = y + dy[i];
//		if (a2 < 1 || a2 >= n || b < 1 || b >= n) continue;
//		if (a[a2][b].fi != '#') return true;
//	}
//	return false;
//}
//void solve()
//{
//	sd(n);
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= n; j++)
//		{
//			cin >> a[i][j].fi;
//			if (a[i][j].fi == '#') a[i][j].se = true;
//			else a[i][j].se = false;
//		}
//
//	}
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= n; j++)
//		{
//			if (a[i][j].fi == '#')
//			{
//				if (!check(i, j)) cout << '.';
//				else cout << '#';
//			}
//		}
//		puts("");
//	}
//}
//
//
//
//int main()
//{
//	int T=1;
//	//sd(T);
//	while (T--)
//	{
//		solve();
//	}
//	return 0;
//}



//#include<bits/stdc++.h>
//#define sd(n) scanf("%d",&n) 
//#define sld(n) scanf("%lld",&n)
//#define pd(n) printf("%d", (n))
//#define pld(n) printf("%lld", n)
//#define all(x) (x).begin(),(x).end()
//#define rall(x) (x).rbegin(),(x).rend()
//#define fi first
//#define se second
//const int N = 2e5;
//#define INF 0x7fffffff
//typedef long long int ll;
//using namespace std;
//#define PII pair<char,bool>
////----------------------------------------------------------------------------//
//int dx[4] = { -1, 0, 1, 0 };
//int dy[4] = { 0, 1, 0 ,-1 };
//int n; PII a[100][100];
//bool check(int x, int y)//i,j
//{
//	for (int i = 0; i <= 4; i++)
//	{
//		int a2 = x + dx[i], b = y + dy[i];
//		if (a2 < 1 || a2 >= n || b < 1 || b >= n) continue;
//		if (a[a2][b].fi != '#') return false;
//	}
//	return true;
//}
//void solve()
//{
//	sd(n);
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= n; j++)
//		{
//			cin >> a[i][j].fi;
//			if (a[i][j].fi == '#') a[i][j].se = true;
//			else a[i][j].se = false;
//		}
//
//	}
//	int ans = 0;
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= n; j++)
//		{
//			if (a[i][j].fi == '#')
//			{
//				if (!check(i, j)) cout << '.';
//				else cout << '#', ans++;
//			}
//			else cout << '.';
//		}
//		puts("");
//	}
//	pd(ans);
//}
//
//
//
//int main()
//{
//	int T = 1;
//	//sd(T);
//	while (T--)
//	{
//		solve();
//	}
//	return 0;
//}



//#include<bits/stdc++.h>
//using namespace std;
////----------------------------------------------------------------------------//
//
//void solve2()
//{
//	string ss;
//	cin >> ss;
//	int n2 = ss.size();
//	string tmp;
//	for (int i = 1; i < n2; i++)
//	{
//		tmp.push_back(ss[i - 1]);
//		if (ss[i] == 'a')
//		{
//			cout << tmp<<" " << "a" << " " << ss.substr(i + 1, n2 - i - 1) << endl; return;
//		}
//	}
//	cout << ss[0] << " " << ss.substr(1, n2 - 2) << " " << ss[n2 - 1] << endl;;
//}
//
//int main()
//{
//	int T; cin >> T;
//	while (T--) solve2();
//	return 0;
//}



//#include<bits/stdc++.h>
//using namespace std;
//
//void work()
//{
//	int n; cin >> n;
//	map<int, int> mp2; vector<vector<int>> nm;
//	for (int i = 0; i < n; i++)
//	{
//		int b;
//		cin >> b;
//		vector<int> t;
//		for (int j = 0; j < b; j++)
//		{
//			int tmp2;
//			cin >> tmp2;
//			t.push_back(tmp2);
//			mp2[tmp2]++;
//		}
//		nm.push_back(t);
//	}
//	for (auto v : nm)
//	{
//		bool judge = true;
//		for (int& k : v)
//		{
//			if (mp2[k] == 1)
//			{
//				judge = false;
//				goto next;
//			}
//		}
//		if (judge == true)
//		{
//			puts("YES");
//			return;
//		}
//	next:;
//	}
//	puts("NO");
//
//
//}
//
//int main()
//{
//	int T2; cin >> T2;
//	while (T2--) work();
//	return 0;
//}



//#include<bits/stdc++.h>
//#define sd(n) scanf("%d",&n) 
//#define sld(n) scanf("%lld",&n)
//#define pd(n) printf("%d", (n))
//#define pld(n) printf("%lld", n)
//#define all(x) (x).begin(),(x).end()
//#define rall(x) (x).rbegin(),(x).rend()
//#define fi first
//#define se second
//const int N = 2e5;
//#define INF 0x7fffffff
//typedef long long int ll;
//using namespace std;
////----------------------------------------------------------------------------//
//int n;
//int a[1005];
//int b[1005];
//void solve()
//{
//    sd(n);
//    for (int i = 1; i <= n; i++) sd(a[i]);
//    if (n == 1)
//    {
//        pd(-1);
//        puts("");
//        return;
//    }
//    for (int i = 1; i <= n; i++) b[i] = i;
//    {
//        bool ok = true;
//        for (int i = 1; i <= n; i++)
//        {
//            if (a[i] == b[i])
//            {
//                ok = false; break;
//            }
//        }
//        if (ok) goto ed;
//    }while (next_permutation(b + 1, b + n + 1));
//ed:;
//    for (int i = 1; i <= n; i++)
//    {
//        cout << b[i] << " ";
//    }
//    puts("");
//
//
//}
//
//int main()
//{
//    int T;
//    sd(T);
//    while (T--)
//    {
//        solve();
//    }
//    return 0;
//}


//#include<bits/stdc++.h>
//#define sd(n) scanf("%d",&n) 
//#define sld(n) scanf("%lld",&n)
//#define pd(n) printf("%d", (n))
//#define pld(n) printf("%lld", n)
//#define all(x) (x).begin(),(x).end()
//#define rall(x) (x).rbegin(),(x).rend()
//#define fi first
//#define se second
//const int N = 2e5;
//#define INF 0x7fffffff
//typedef long long int ll;
//using namespace std;
////----------------------------------------------------------------------------//
//int n;
//int a[1005];
//int a2[1005];
//int b[1005];
//
//void solve()
//{
//	sd(n);
//	for (int i = 1; i <= n; i++)
//	{
//		sd(a[i]);
//		a2[i] = a[i];
//	}
//	if (n == 1)
//	{
//		pd(-1);
//		puts("");
//		return;
//	}
//	sort(a2 + 1, a2 + n + 1);
//	for (int i = 1; i <= n; i++) b[i] = a2[i];
//	{
//		bool ok = true;
//		for (int i = 1; i <= n; i++)
//		{
//			if (a[i] == b[i])
//			{
//				ok = false; break;
//			}
//		}
//		if (ok) goto ed;
//	}while (next_permutation(b + 1, b + n + 1));
//ed:;
//	for (int i = 1; i <= n; i++)
//	{
//		cout << b[i] << " ";
//	}
//	puts("");
//
//
//}
//
//int main()
//{
//	int T;
//	sd(T);
//	while (T--)
//	{
//		solve();
//	}
//	return 0;
//}



#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define sld(n) scanf("%lld",&n)
#define pd(n) printf("%d", (n))
#define pld(n) printf("%lld", n)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define fi first
#define se second
const int N = 2e5;
#define INF 0x7fffffff
typedef long long int ll;
using namespace std;
//----------------------------------------------------------------------------//
int n;
int a[1005];
int b[1005];
void solve()
{
	memset(b, 0, sizeof b);
	priority_queue<int,vector<int>,greater<int>> num;
	sd(n);
 	for (int i = 1; i <= n; i++)
	{
		sd(a[i]); num.push(a[i]);
	}
	if (n == 1)
	{
		pd(-1);
		puts("");
		return;
	}
	//sort(a2+1,a2+n+1);
	//for(int i=1;i<=n;i++) b[i]=a2[i];
	// do
	// {
	// 	bool ok=true;
	// 	for(int i=1;i<=n;i++)
	// 	{
	// 		if(a[i]==b[i])
	// 		{
	// 			ok=false;break;
	// 		}
	// 	}
	// 	if(ok) goto ed;
	// }while (next_permutation(b+1, b+n+1));
	// ed:;
	// for(int i=1;i<=n;i++)
	// {
	// 	cout<<b[i]<<" ";
	// }
	// puts("");
	for (int i = 1; i <= n; i++)
	{
		int pos = 1;
		int tp = num.top();
		while (pos <= n)
		{
			if (pos == n || (tp != a[pos]&&b[pos]==0))
			{
 				b[pos] = tp;
				goto ed;
			}
			else if(tp == a[pos]||b[pos]!=0)
			{
				pos++; continue;
			}
			
		}
	ed:;
		num.pop();
  	}
	
	for (int i = 1; i <= n; i++) cout << b[i] << " ";
	puts("");
}

//bool digitCount(string num)
//{
//	unordered_map<int, int> cnt;
//	bool ok = true;
//	for (auto& k : num) cnt[k - '0']++;
//	for (int i = 0; i < num.size(); i++)
//	{
//		if (i != cnt[num[i]-'0'])
//		{
//			ok = false;
//			break;
//		}
//	}
//	if (ok) return true;
//	else return false;
//}

//bool digitCount(string num)
//{
//	unordered_map<int, int> cnt;
//	bool ok = true;
//	for (auto& k : num) cnt[k - '0']++;
//	for (int i = 0; i < num.size(); i++)
//	{
//		int sz1 = (int)(num[i] - '0');
//		int sz2 = (int)(num[i] - '0');
//		if (sz1 != sz2)
//		{
//			ok = false;
//			break;
//		}
//	}
//	if (ok) return true;
//	else return false;
//}


bool digitCount(string num)
{
	unordered_map<int, int> cnt;
	bool ok = true;
	for (auto& k : num) cnt[k - '0']++;
	for (int i = 0; i < num.size(); i++)
	{
		int sz1 = (int)(num[i] - '0');
		int sz2 = cnt[i];
		if (sz1!=sz2)
		{
			ok = false;
			break;
		}
	}
	if (ok) return true;
	else return false;
}
int main()
{
	/*int T;
	sd(T);
	while (T--)
	{
		solve();
	}*/
	//char a = '1';
	////char b = (char)(a + 48);
	//int b = (int)(a - '0');

	digitCount("1210");

	return 0;
}